package com.solution.admin.settings.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import com.solution.admin.settings.dao.KeyMapDao;
import com.solution.admin.settings.entity.KeyMapEntity;
import com.solution.admin.settings.service.KeyMapService;
import com.solution.common.dao.BaseDao;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;
import com.solution.common.redis.RedisCacheClient;
import com.solution.common.service.impl.BaseServiceImpl;

/**
 * 数据字典信息Service实现层
 * 
 * @author zhaieryuan
 * @date 2017年4月19日 下午2:39:26
 */
@Service
public class KeyMapServiceImpl extends BaseServiceImpl<KeyMapEntity> implements KeyMapService {

	@Autowired
	private KeyMapDao keyMapDao;

	@Autowired
	RedisCacheClient redisCacheClient;

	/**
	 * 返回baseDaoxinxi
	 * 
	 * @return
	 * @author zhaieryuan
	 * @date 2017年4月19日 下午2:42:57
	 */
	@Override
	protected BaseDao<KeyMapEntity> getDao() {
		return keyMapDao;
	}

	/**
	 * 获取所有数据字典查询信息
	 * 
	 * @param map
	 * @return List
	 * @author zhaieryuan
	 * @date 2017年4月19日 下午2:43:00
	 */
	@Override
	public List<KeyMapEntity> listKeyMap(String keyType) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("keyType", keyType);
		return keyMapDao.listKeyMap(param);
	}

	/**
	 * 接口使用，根据类型 根据值(经销商) 获取对应的 业务员角色 ID(固定值)
	 * 
	 * @param param
	 * @return
	 * @author chenl
	 * @date 2017年5月13日 下午5:16:41
	 */
	@Override
	public List<KeyMapEntity> listByTypeAndKeyVal(Map<String, Object> param) {
		return keyMapDao.listByTypeAndKeyVal(param);
	}

	/**
	 * 新增保存
	 * 
	 * @param record
	 * @return
	 * @author zhaieryuan
	 * @date 2017年5月8日 下午2:18:53
	 */
	public String saveKeyMapEntity(KeyMapEntity record) {
		redisCacheClient.evictOneKey("KEYMAP_" + record.getKeyType());
		keyMapDao.saveKeyMapEntity(record);
		return record.getKeyType();
	}

	/**
	 * 根据主键获取
	 * 
	 * @param id
	 * @return
	 * @author zhaieryuan
	 * @date 2017年5月8日 下午2:20:25
	 */
	@Override
	public KeyMapEntity getById(String id) {
		return keyMapDao.getById(id);
	}

	/**
	 * 修改
	 * 
	 * @param record
	 * @return
	 * @author zhaieryuan
	 * @date 2017年5月8日 下午2:21:14
	 */
	@Override
	public int modifyKeymap(KeyMapEntity record) {
		redisCacheClient.evictBatchKeys("KEYMAP_");
		return keyMapDao.modifyKeymap(record);
	}

	/**
	 * 查询分页列表
	 * 
	 * @param pageParam
	 * @param paramMap
	 * @return
	 * @author zhaieryuan
	 * @date 2017年5月8日 下午2:21:38
	 */
	@Override
	public PageBean listKeyMapByPageBean(PageParam pageParam, Map<String, Object> paramMap) {
		return keyMapDao.listKeyMapByPageBean(pageParam, paramMap);
	}

	/**
	 * 根据keyType修改字典信息
	 * 
	 * @param keyMap
	 * @return
	 * @author wangchuang
	 * @date 2017年7月24日 下午1:48:30
	 */
	@Override
	public int modifyKeyMapByKeyType(KeyMapEntity keyMapEntity) {
		redisCacheClient.evictBatchKeys("KEYMAP_");
		return keyMapDao.modifyKeyMapByKeyType(keyMapEntity);
	}

	/**
	 * 查询所有字典项
	 * @author james
	 */
	public List<KeyMapEntity> listAllDict(){
		return keyMapDao.listAllDict();
	}
	
}
